1. Introduction

The Object Plant gives you the opportunity to create four different kinds of descriptions of a software
system.

The notation is based upon the Object Modeling Technique (OMT) developed by Rumbaugh et al and
UML (Unified Modelling Language) developed by Rumbaugh, Booch and Jacobson. This help text
will only refer to OMT notation.

This is not a complete description of the program, refer to the User's Manual for more information.

1.1 The Object Model

"An object model captures the static structure of a system by showing the objects in the system, relation-
ships between the objects, and the attributes and operations which characterize each class of objects."

The Object Plant allows you to create Object Model diagrams, where you can model classes, interfaces, 
associations, generalizations and aggregations. The Object Model diagram can be split into several pages,
each page representing a part of a system.

The picture below shows an example of an Object Model diagram.

1.2 The Dynamic Model

"The major dynamic modeling concepts are events, which represent external stimuli, and states, which
represent values of objects"

The Object Plant allows you to create Event Trace diagrams and State diagrams. Each of them can be
divided into several pages much like the Object Model diagram.

Substates will eventually be provided, but the current version does not support substates.

The picture below shows an example of an Event Trace diagram.

A thread is normally an object in the software system. The boxes on a thread shows when the object is active.
Events can either be function calls, queue messages or some other way of communication.

1.3 Use Case diagram

"A use case diagram shows the relationship among actors and use cases within a system. A use case diagram
is a graph of actors, a set of use cases enclosed by a system boundary, communication (participation)
associations between the actors and the use cases, and generalizations among use cases."

The picture below shows an example of a Use Case diagram.

2. Object Model Diagram

The Object Model Toolbox contains twelve different tools:

2.1 Select Tool

The select tool is used to select one or several of the items in an Object Model page. There are only two types
of items in an Object Model page, class items and association items, where association items may be of the
Aggregation, Association or Generalization type.

To select one item click on the item. A selected item is marked by a set of small black squares positioned at
the corners of the item.

To select several items, one may either shift-click the items or framing a set of items by holding the mouse
button down while stretching a select frame.

The select tool is also used to move items. If you hold the mouse button down when selecting a class, the
cursor will after will change to a move cursor    . You may then move the selected items freely. If you hold
the mouse button down when selecting an association, the move cursor will appear only if the cursor is
positioned above a black select square. If you then move the mouse, that point of the association will move.

The select tool is used to created subsystems. This is done by doubleclicking on a class box while pressing
the option-key. The top level class box will then be drawn with a dashed outline to indicate that it is a sub-
system and not a real class. A new page for the subsystem will automatically be created and the page will
have the name of the "parent-class". In the Project window, the name of subsystems will be indented
relative its parent.

2.2 Class Tool

The Class Tool is used to create class items in the Object Model. Not much to say about this tool...

2.3 Interface Tool

The Interface Tool is used to create interface items in the Object Model. Interfaces are not supported in
the OMT notation but Unified Modeling Language supports interfaces.

2.4 Supplier Tool

The Supplier Tool is used to create an supplier association between a class and an interface (a class
supplies an interface). When this tool is selected the cursor will change into the association cursor   .

Position the cursor at an interface, press and hold the button and stretch a line to the class and then release
the button.

If you release the button outside any class item, no association will be created.

2.5 Association Tool

The Association Tool is used to create an Association between two classes. When this tool is selected the
cursor will change into the association cursor.

Position the cursor at a class, press and hold the button and stretch a line to the other class and then release
the button. If you want a selfreferencing association, press and release the button in the same class item.

2.6 Aggregation Tool

The Aggregation Tool works almost the same as the Association Tool but with one difference. It is possible to
create multibranch aggregations:

To make a multibranch aggregation, start creating an ordinary aggregation between two classes. Add a new
branch by pushing the button on the aggregation, either any of the lines or in the small diamond. Then
stretch it to a class item and release the button.

2.7 Generalization Tool

The Generalization Tool works as the Aggregation Tool. Multibranch generalizations are possible.

2.8 Package Tool

The Package Tool can be used to create a grouping of model elements. "Packages may be nested within
other packages. A package may contain both subordiante packages and ordinary model elements. The
entire system can be thought of as a single high-level package with everything else in it. All kinds of
model elements and diagrams can be organized into packages."

Creating a package will automatically create a new sub-page relative the current page.

2.9 Dependency Tool

The Dependency Tool can be used to illustrate dependencies between packages.

2.10 Cut Tool

The Cut Tool can be used to split an association line into two. Position the top of the knife cursor at the line
where you want it to be splitted.

2.11 Note Tool

You can place notes anywhere in the diagrams. In the current version, notes are not related to any
particular part of a diagram, they are standalone, but in future releases they will be connected to some
other item in a diagram.

A note can, for example, include pseudo code to illustrate the implementation of a class operation.

A note can be resized by selecting it and draging in any of the corner squares.

2.12 Inspect Tool

With this tool you can read the Description field of every item (class, association etc) without having to
open a dialog window for the item. Just position the magnifying glass above the item you want to study
and the description text will be presented in a "balloon-ish" frame.

2.13 Text Tool

The Text Tool can be used to insert an arbitrary text anywhere in the diagram.

2.14 Frame Tool

The Frame Tool can be used to insert a frame in the diagram. This can be useful to visually 
anclose a group of classes etc.

2.15 Nested Object Models

You can create nested models containing subsystems each of them described on a separate Object Model page.
A class item can be turned into a subsystem by double-clicking on the class item with the select tool while
pressing the option-key. A new page will then be opened which has the name of the class item. The name of
the new page page cannot be changed, it will always have the same name as it original class.

The original class item will be drawn with a dashedout line to indicate that it is a subsystem. If you try to
delete such a class, a confirmation dialog will show up. If you confirm the deletion of the class, the nested
page will also be deleted.

In the Project window, nested object model page names will be indented relative their parent names.

3. Event Trace

The Event Trace Toolbox contains eight different tools:

3.1 Select Tool

The select tool in the Event Trace diagram works the same way as in the Object Model diagram. The only
difference it that when you move items in the Event Trace diagram the move cursor may look different.
When you move threads, you can only move them sideways why the move cursor looks like this     . When
you're moving boxes, you may only move them up and down why the cursor looks like this    .

You also use the select tool to change the size of threads and boxes. If you hit either end of a thread, the
cursor will change to the resize cursor which looks like this    . You may then change the size of the
threads. Note that all threads will change size. They always have the same height. To alter the size of a box,
hit either end of the box and the cursor changes to the resize cursor. Then move the mouse to change the
size of the box.

3.2 Thread Tool

The Thread Tool is used to create thread items in the Event Trace diagram. Not much to say about this tool
except that the height of a new thread is determined by the height of other threads in the diagram. All
threads must always have equal heights.

3.3 Box Tool

The Box Tool is used to create box items in the Event Trace. When you have selected this tool and moves the
cursor over a thread, a hanging box will appear below the cursor. This indicates that you may create a box
at the current position.

3.4 Event Tool

The Event Tool is used to create an event between two boxes. When this tool is selected the cursor will
change into the event cursor  .

Position the cursor at a box, press and hold the button and stretch a line to the other box and then release
the button. If you want a selfreferencing event, press and release the button in the same box item.

If you release the button outside any box item, no event will be created.

3.5 Package & Dependency & Note & Inspect & Text & Frame Tool

Are exactly the same as the Object Model package, dependency, note, inspect, text and frame tool.

4. State Diagrams

The State Diagram Toolbox contains ten different tools.

4.1 Select Tool

The select tool in the State Diagram works the same way as in the Object Model diagram. 

4.2 State Tool

This tool is used to create a state model element.

4.3 Initial and Final State Tool

These tools can be used to insert final and initial state symbols (bull's eye and filled circle).

4.4 Event Tool

The Event Tool can be used to create an event starting from a state (ordinary or initial) ending
in a state (ordinary or final).

4.5 Cut Tool

The Cut Tool can be used to split an event line into two. Position the top of the knife cursor at the line
where you want it to be splitted.

4.6 Package & Dependency & Note & Inspect & Text & Frame Tool

Are exactly the same as the Object Model package, dependency, note, inspect, text and frame tool.

5. Use Case Diagrams

The Use Case Toolbox contains ten different tools.

5.1 Select Tool

The select tool in the Use Case diagram works the same way as in the Object Model diagram. 

5.2 Use Case Tool

This tool can be used to create a use case symbol.

5.3 Actor Tool

This tool can be used to create an actor symbol.

5.4 Generalization Tool

This tool can be used to create a generalization (uses or extends) between two use cases.

5.5 Communicates Tool

This tool can be used to connect an actor with a use case.

5.6 Cut Tool

The Cut Tool can be used to split a communication line into two. Position the top of the knife cursor at the line
where you want it to be splitted.

5.7 Package & Dependency & Note & Inspect & Text & Frame Tool

Are exactly the same as the Object Model package, dependency, note, inspect, text and frame tool.

6. The Menus

The Object Plant has five fixed menus and some menus which appear now and then. The fixed menus are:
File, Edit, View, Special and Windows.

6.1 File Menu

When no document is open, the file menu looks like this:

The New, Open, Save, Save as, Close and Quit do not require any explanation, do they?

When a document is open the File menu looks like this:

The "Document Preferences..." item contains two submenus: "General..." and "Data Types...". In the General
item you can select the notation to be used with the document and some code generation preferences. The
Data Types item will bring up a dialog where you can specify the data types used in the document (project).
You can create your own set of data types by adding and removing data types as you like. There is one
standard C++ data type set included in the ObjectPlant package which can be loaded using the "Load set"-
button.

Here the "Export Page as..." item is used to export the current main window content in PICT or EPS format.
Note that not all types of window may be exported, only the four main windows: Object Model, State
Diagram, Event Trace and Use Case windows.

The "Generate code (all)..." item is used to generate code for all model items as described by the currently
selected template files (in the Document preferences->General dialog).

The "Generate code (selected)..." item is used to generate code for selected model items as described by the
currently selected template files (in the Document preferences->General dialog).

The Print Page item will print the selected page in the currently active main window.

The "Import code..." item is used to import code in the language defined in the Document preferences->General
dialog).

6.2 Edit Menu

In this menu the Cut, Copy and Paste items are enabled and implemented for text fields. Copy and Paste are also
enabled for certain items in the diagrams such as classes, states and threads. The Clear can also be used to
delete parts in the Object Model, State Diagram, Event Trace and Use Case diagram.

The Clear item can also be used to delete class attributes and operations. To do this, doubleclick on the class box so
that the Class Dialog Window appears. Then select the attribute or operation to be deleted by clicking to the left
of the attribute's (or operation's) name or description field. The attribute will then be selected and the
"Clear" item of the Edit menu will be enabled.

Event entries in state boxes can be deleted the same way as class attributes and operations.

6.3 View Menu

The number of items in this menu depends upon the number of "View sets" that you have defined in the
Edit->Preferences... dialog.

6.4 Special Menu

This menu has four items: Info, Align, New Page and Delete Page.

"Info" will be enabled when one or several items in the currently active main window are selected. Choosing
"Info" will present a dialog window for each of the selected items. The same dialog window will appear when
doubleclicking on an item.

If you delete the last page in for example the Object Model, a new empty page will automatically be created
since all models must have at least one page.